package czhcontroller

import (
	"Cgo/common"
	"Cgo/front/models"

	"github.com/gin-gonic/gin"
)

func CzhLoginController(r *gin.RouterGroup) {
	r.GET("/login", common.HandlerFunc(login))
	r.POST("/registration", common.HandlerFunc(registration))
	r.GET("/getUserInfo", common.HandlerFunc(getUserInfo))
	r.GET("/getAllUserInfo", common.HandlerFunc(getAllUserInfo))
	r.POST("/edit", common.HandlerFunc(edit))
	r.POST("/userRemove", common.HandlerFunc(userRemove))
}

// @Summary 用户登录
// @Schemes
// @Description 用户登录
// @Tags czh前台接口
// @Param account query string true "用户账号"
// @Param password query string true "用户密码"
// @Accept json
// @Produce json
// @Success 200 {object} common.RT[models.CzhUser]
// @Router /front/czh/admin/login [get]
func login(ctx *gin.Context) common.Result {
	account := ctx.Query("account")
	password := ctx.Query("password")
	if account == "" || password == "" {
		return common.R.Fail("请输入正确的账号密码")
	}
	userInfo, err := LoginDao.UserLogin(account, password)
	if err != nil {
		return common.R.Fail("暂无用户数据")
	}
	return common.R.Success(userInfo)
}

// @Summary 用户注册
// @Schemes
// @Description 用户注册
// @Tags czh前台接口
// @Param user body models.CzhUser true "注册信息"
// @Accept json
// @Produce json
// @Success 200 {object} common.RT[string]
// @Router /front/czh/admin/registration [post]
func registration(ctx *gin.Context) common.Result {
	var user models.CzhUser
	err := ctx.ShouldBindJSON(&user)
	if err != nil {
		return common.R.Fail("参数错误")
	}
	if user.Account == "" || user.Password == "" {
		return common.R.Fail("请输入正确的账号密码")
	}
	err = LoginDao.UserRegistration(user.Account, user.Password, user.Name, user.Avatar, user.Gender, user.Surplus)
	if err != nil {
		return common.R.Fail("注册失败")
	}
	return common.R.Success("注册成功")
}

// @Summary 获取用户数据
// @Schemes
// @Description 获取用户数据
// @Tags czh前台接口
// @Param id query string true "用户id"
// @Accept json
// @Produce json
// @Success 200 {object} common.RT[models.CzhUser]
// @Router /front/czh/admin/getUserInfo [get]
func getUserInfo(ctx *gin.Context) common.Result {
	id := ctx.Query("id")
	if id == "" {
		return common.R.Fail("参数错误")
	}
	userInfo, err := LoginDao.GetUserInfo(id)
	if err != nil {
		return common.R.Fail("暂无用户数据")
	}
	return common.R.Success(userInfo)
}

// @Summary 获取所有用户数据
// @Schemes
// @Description 获取所有用户数据
// @Tags czh前台接口
// @Accept json
// @Produce json
// @Success 200 {object} common.RT[[]models.CzhUser]
// @Router /front/czh/admin/getAllUserInfo [get]
func getAllUserInfo(ctx *gin.Context) common.Result {
	allUserInfo, err := LoginDao.GetAllUserInfo()
	if err != nil {
		return common.R.Fail("暂无用户数据")
	}
	return common.R.Success(allUserInfo)
}

// @Summary 用户编辑
// @Schemes
// @Description 用户编辑
// @Tags czh前台接口
// @Param user body models.CzhUser true "注册信息"
// @Accept json
// @Produce json
// @Success 200 {object} common.RT[string]
// @Router /front/czh/admin/edit [post]
func edit(ctx *gin.Context) common.Result {
	var user models.CzhUser
	err := ctx.ShouldBindJSON(&user)
	if err != nil {
		return common.R.Fail("参数错误")
	}
	err = LoginDao.UserEdit(user.Id, user.Avatar, user.Name, user.Gender, user.Synopsis, user.Surplus)
	if err != nil {
		return common.R.Fail("修改失败")
	}
	return common.R.Success("修改成功")
}

// @Summary 删除用户
// @Schemes
// @Description 删除用户
// @Tags czh前台接口
// @Param user body models.CzhUser true "用户信息"
// @Accept json
// @Produce json
// @Success 200 {object} common.RT[string]
// @Router /front/czh/admin/userRemove [post]
func userRemove(ctx *gin.Context) common.Result {
	var user models.CzhUser
	err := ctx.ShouldBindJSON(&user)
	if err != nil {
		return common.R.Fail("参数错误")
	}
	err = LoginDao.UserRemove(user.Id)
	if err != nil {
		return common.R.Fail("删除失败")
	}
	return common.R.Success("删除成功")
}
